// 有后台传json对象到建立json数组的方法
// TreeLoader扩展,支持josn-plugin返回的json对象中包含的数组值
Ext.tree.JsonPluginTreeLoader = function(config) {
	this.rootName = 'root';
	Ext.tree.JsonPluginTreeLoader.superclass.constructor.call(this, config);
};

Ext.extend(Ext.tree.JsonPluginTreeLoader, Ext.tree.TreeLoader, {
	processResponse : function(response, node, callback) {
		var json = response.responseText;
		try {
			var o = response.responseData || Ext.decode(json);

			o = eval("(" + o + ")"); // 这个一定要写，不然无法识别成对象
			node.beginUpdate();
			for ( var i = 0, len = o.length; i < len; i++) {
				var n = this.createNode(o[i]);
				if (n) {
					node.appendChild(n);

				}
			}
			node.endUpdate();
			this.runCallback(callback, scope || node, [ node ]);
		} catch (e) {
			this.handleFailure(response);
		}
	}
});

// 导航树树建立
var root = new Ext.tree.AsyncTreeNode({
	id : 'root',
	text : "服务转换功能库",
	expanded : true,
	rootVisible : false,

	children : [ {
		text : '模型组管理',
		id : 'groupCompany',
		leaf : true
	}, {
		text : '模型管理',
		id : 'search',
		leaf : true
	}, {
		text : '数据字段管理',
		leaf : true,
		id : 'table-manager'
	}, {
		text : '权限设置',
		leaf : true,
		id : 'privilege'
	}, {
		text : '日志管理',
		leaf : true,
		id : 'oplog'
	}, {
		text : '注册审批',
		leaf : true,
		id : 'registlist'
	}, {
		text : "模型源文件",
		id : 'model',
		loader:new Ext.tree.JsonPluginTreeLoader({
			dataUrl:'showModelXml'
		})
		/*children : [ {
			text : "业务对象模型",
			id : 'domainModelXml',
			loader : new Ext.tree.JsonPluginTreeLoader({
				dataUrl : 'showDomainModelXml'
			})
		}, {
			text : "功能模型",
			id : 'functionModelXml',
			loader : new Ext.tree.JsonPluginTreeLoader({
				dataUrl : 'showFuctionModelXml'
			})

		}, {
			text : "组织模型",
			id : 'departmentModelXml',
			loader : new Ext.tree.JsonPluginTreeLoader({
				dataUrl : 'showDepartmentModelXml'
			})

		}, {
			text : "BPEL模型",
			id : 'bpelModel',
			loader : new Ext.tree.JsonPluginTreeLoader({
				dataUrl : 'showBpelModelXml'
			})
		},{
			text : "EPC模型",
			id : 'epcModelXml',
			loader : new Ext.tree.JsonPluginTreeLoader({
				dataUrl : 'showEpcModelXml'
			})

		}, {
			text : "WADL模型",
			id : 'wadlModel',
			loader : new Ext.tree.JsonPluginTreeLoader({
				dataUrl : 'showWadlModelXml'
			})

		},{
			text : "WSDL模型",
			id : 'wsdlModel',
			loader : new Ext.tree.JsonPluginTreeLoader({
				dataUrl : 'showWsdlModelXml'
			})

		},  {
			text : "BPMN模型",
			id : 'bpmnModel',
			loader : new Ext.tree.JsonPluginTreeLoader({
				dataUrl : 'showBpmnModelXml'
			})
		} ]*/
	}, {	
			id : 'modelgroup',
			text : '模型视图',			
			loader : new Ext.tree.JsonPluginTreeLoader({ 
			dataUrl : 'showModelgroup' })

//		text : "视图库",
//		children : [{
//			text : "功能视图",
//			children : [ {
//				id : 'processlist',
//				text : '功能结构',
//				leaf : true
//			/*
//			 * loader : new
//			 * Ext.tree.JsonPluginTreeLoader( {
//			 * dataUrl : 'showProcessTreeNode' })
//			 */
//			}, {
//				id : 'functionpointlist',
//				text : '功能库',
//				leaf : true
//			/*
//			 * loader : new
//			 * Ext.tree.JsonPluginTreeLoader( {
//			 * dataUrl : 'showFunctionTreeNode' })
//			 */
//			} ]
//		}, {
//			text : "组织视图",
//			children : [ {
//				id : 'companylist',
//				text : '组织结构',
//				leaf : true
//			/*
//			 * loader : new
//			 * Ext.tree.JsonPluginTreeLoader( {
//			 * dataUrl : 'showProcessTreeNode' })
//			 */
//			}, {
//				id : 'rolelist',
//				text : '角色权限',
//				leaf : true
//			/*
//			 * loader : new
//			 * Ext.tree.JsonPluginTreeLoader( {
//			 * dataUrl : 'showFunctionTreeNode' })
//			 */
//			} ]
//		}, {
//
//			text : "业务流程视图",
//			id : 'epclist',
//			leaf : true
//		/*
//		 * loader : new
//		 * Ext.tree.JsonPluginTreeLoader({ dataUrl :
//		 * 'showEpcModelXml' })
//		 */
//		}, 
//		{
//
//			text : "业务对象视图", // 这里动态导入节点
//			id : 'domainlist',
//			leaf : true
//		/*
//		 * loader : new
//		 * Ext.tree.JsonPluginTreeLoader({ dataUrl :
//		 * 'showDomainTreeNode' })
//		 */
//
//		} ]
	}, {
		text : "服务转换",
		id : 'serviceChange',
		children : [ {
			text : "服务转换",
			id:'transform',
			leaf : true
		
		}]
	}, {
		text : "文件导入",
		children : [ {
			text : "模型导入",
			leaf : true,
			listeners : {
				'click' : function() {
					wizard.show();
				}
			}
		},
		{
			text : "模型导出",
			leaf : true,
			listeners : {
				'click' : function() {
					exportwin.display();
				}
			}
		} ]

	} ]

});

// Go ahead and create the TreePanel now so that we can use it below
var treePanel = new Ext.tree.TreePanel({
	id : 'tree-panel',
	title : '模块选择',
	region : 'center',
	split : true,
	height : 300,
	minSize : 150,
	autoScroll : true,
	root : root
});
treePanel.on('click',function(node){
	var sn = this.selModel.selNode || {}; // selNode is null on
	

	/*// initial
	// selection
	if (node.leaf && node.id != sn.id) { // ignore clicks on folders and
		// currently selected node
		// Ext.getCmp('content-panel').layout.setActiveItem(n.parentNode.id
		// + '-panel');
		//alert(node.id);
		Ext.getCmp('content-panel').layout.setActiveItem(node.text + '-panel');
		contentInit(node.parentNode.id, node.id, node.id);
		alert(node.id);
		//alert(node.id);
	}*/
});

/*treePanel.on('afterload',function(node){
	if(node!=null){
		alert(node.id);
	}
});*/


treePanel.on('beforeload', function(node) {
	if(node!=null)
	{
		//alert(node.text);
		//alert(node.parentNode.id);
		/*Ext.Msg.show({
            title: 'noting',
            msg: "you click" + node.text,
            animEl: node.ui.textNode
        });*/
	}
	if(node.parentNode!=null)
	{
	nodeName=node.text;//because  always get on the pre-layer
	//alert(nodeName);
	/*Ext.Msg.show({
        title: 'noting',
        msg: "you click" + nodeName,
        animEl: node.ui.textNode
    });*/
	}
});



